package avicit.im.lantop.basic.archiveclassmanager.action.service;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 金航数码科技有限责任公司
 * </p>
 * <p>
 * 作者：王旭
 * </p>
 * <p>
 * 邮箱：wangxu01@avicit.com
 * </p>
 * <p>
 * 创建时间： 2014-9-23 上午11:43:35
 * </p>
 * <p>
 * 类说明：表单自定义模块接口
 * </p>
 * <p>
 * 修改记录：
 * </p>
 */
public interface BillDefineManagerIntfsService {

	/**
	 * 创建表单信息
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param nodeName
	 * @param tableId
	 * @throws Exception
	 *             void
	 * @throws
	 */
	public void createCbbTabFormByIntfs(String orgId, String deptId, String sysId, String nodeId, String nodeName, String tableId) throws Exception;

	/**
	 * 添加业务数据
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param mapObj
	 * @throws Exception
	 *             String （记录ID）
	 * @throws
	 */
	public String insertRecordByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, Map<String, Object> mapObj, String loginUserId, String loginIp) throws Exception;

	/**
	 * 添加业务数据（批量）
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param listMapObj
	 * @param param
	 *            参数map[p1：key='wjIds'，value：String非必填（文件数据ID，组卷时有值）]
	 *             [p2：key='dataId'，value：String非必填（数据ID，顺带时有值）]
	 * @throws Exception
	 * @throws
	 */
	public String insertRecordByBatchByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, List<Map<String, Object>> listMapObj, String loginUserId, String loginIp, Map<String, Object> param) throws Exception;

	public String getConfigStr(String sourceId, String tableId, String recordId) throws Exception;

	/**
	 * 根据数据ID修改业务数据状态等（单一数据修改）
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param mapObj
	 *            （列名：值）
	 * @param dataId
	 * @throws Exception
	 *             void
	 * @throws
	 */
	public void updateRecordByDataIdByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, Map<String, Object> mapObj, String dataId, Map<String, Object> params) throws Exception;

	/**
	 * 根据IDS批量修改业务数据状态等（批量数据修改）
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param mapObj
	 *            （列名：值）
	 * @param dataIds
	 * @throws Exception
	 *             void
	 * @throws
	 */
	public void updateRecordByDataIdsByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, Map<String, Object> mapObj, String dataIds, Map<String, Object> params) throws Exception;

	/**
	 * 根据IDS批量修改业务数据状态等（批量数据修改）重写
	 * SanXiafiles create by zhaoxiaolong
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param mapObj
	 * @param dataIds
	 * @param params
	 * @param arg1
	 * @throws Exception
	 */
	public void updateRecordByDataIdsByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, Map<String, Object> mapObj, String dataIds, Map<String, Object> params,String arg1) throws Exception;

	/**
	 * 根据IDS，批量修改业务数据（断开表间数据关系）
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param dataIds
	 * @throws Exception
	 *             void
	 * @throws
	 */
	public void updateDisconnectRecordByDataIdsByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, String dataIds, Map<String, Object> params) throws Exception;

	/**
	 * 根据IDS，批量修改业务数据（建立案卷级和文件级数据关系）
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param ajjDataId
	 * @param wjjDataIds
	 * @throws Exception
	 *             void
	 * @throws
	 */
	public void updateRecordByAjjDataIdByIntfs(String orgId, String deptId, String sysId, String nodeId, String ajjDataId, String wjjDataIds, Map<String, Object> params) throws Exception;

	/**
	 * 根据记录ID删除记录信息
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param dataId
	 * @param params
	 * @throws Exception void
	 * @throws
	 */
	public void deleteRecordByDataIdByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, String dataId, Map<String, Object> params) throws Exception;

	/**
	 * 根据记录IDS批量删除记录信息
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param dataIds
	 * @throws Exception
	 *             void
	 * @throws
	 */
	public void deleteRecordByDataIdsByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, String dataIds, Map<String, Object> param) throws Exception;

	/**
	 * 获取表单所有业务数据
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getFormDatasByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId) throws Exception;

	/**
	 * 根据业务状态等获取业务数据
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param mapObj
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getFormDatasByStatusByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, Map<String, Object> mapObj) throws Exception;

	/**
	 * 根据数据ID，获取业务数据
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param dataId
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getFormSingleDataByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, String dataId) throws Exception;

	/**
	 * 根据标识条件，获取字段信息
	 * 
	 * @author 朱锋
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param flag
	 *            （1-添加显示；2-列表显示；3-详细显示；4-查询显示）
	 * @param dataId
	 * @param params
	 *            参数列表
	 *            <ul>
	 *            <li>p1 : key = "ortherMap", 非必输 ,
	 *            Map类型，<兄弟表表ID(String)，兄弟表数据ID(String)>用于选择兄弟表组合项加载数据</li>
	 *            <li>p2 : currentUserId（String）当前用户ID, 必输</li>
	 *            <li>p3 : currentDeptId（String）当前部门ID, 必输</li>
	 *            <li>p4 : currentOrgCode（String）当前组织代码, 必输</li>
	 *            <li>p5 : userAuthsql（String）条件sql(其中包含用户权限sql), 非必输</li>
	 *            <li>p6 : wjIds（String）文件数据ID串（组卷新增案卷时有值）, 非必输</li>
	 *            <li>p7 : nodeId（String）节点ID，非必输</li>
	 *            </ul>
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getFieldsByConditionByIntfs(String orgId, String deptId, String sysId, String tableId, String flag, String dataId, Map<String, Object> params) throws Exception;

	/**
	 * 根据标识条件，获取字段信息
	 * 预归档，著录整理，馆藏档案调用此方法
	 * @author huangjian
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param flag
	 *            （1-添加显示；2-列表显示；3-详细显示；4-查询显示）
	 * @param dataId
	 * @param params
	 *            参数列表
	 *            <ul>
	 *            <li>p1 : key = "ortherMap", 非必输 ,
	 *            Map类型，<兄弟表表ID(String)，兄弟表数据ID(String)>用于选择兄弟表组合项加载数据</li>
	 *            <li>p2 : currentUserId（String）当前用户ID, 必输</li>
	 *            <li>p3 : currentDeptId（String）当前部门ID, 必输</li>
	 *            <li>p4 : currentOrgCode（String）当前组织代码, 必输</li>
	 *            <li>p5 : userAuthsql（String）条件sql(其中包含用户权限sql), 非必输</li>
	 *            <li>p6 : wjIds（String）文件数据ID串（组卷新增案卷时有值）, 非必输</li>
	 *            <li>p7 : nodeId（String）节点ID，非必输</li>
	 *            </ul>
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getFieldsByConditionByIntfsItera(String orgId, String deptId, String sysId, String tableId, String flag, String dataId, Map<String, Object> params) throws Exception;

	/**
	 * 根据数据ID，获取编辑或详细，字段和数据（不带参数集合）
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param dataId
	 * @param flag
	 * @return
	 * @throws Exception List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getEditOrDetailFieldsAndDataByIntfs(String orgId, String deptId, String sysId, String tableId, String dataId, String flag) throws Exception;

	/**
	 * 根据数据ID，获取编辑或详细，字段和数据
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param dataId
	 * @param flag
	 * @param params(p1: key=nodeId)
	 * @return
	 * @throws Exception List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getEditOrDetailFieldsAndDataByIntfs(String orgId, String deptId, String sysId, String tableId, String dataId, String flag, Map<String, Object> params) throws Exception;

	/**
	 * 根据数据ID，获取编辑或详细，字段和数据
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param dataId
	 * @param flag
	 * @param params(p1: key=nodeId)
	 * @return
	 * @throws Exception List<Map<String,Object>>
	 * @throws
	 * HuangJian
	 */
	public List<Map<String, Object>> getEditOrDetailFieldsAndDataByIntfsIera(String orgId, String deptId, String sysId, String tableId, String dataId, String flag, Map<String, Object> params) throws Exception;

	/**
	 * 根据数据ID，获取编辑或详细，字段和数据
	 * @author huangjian
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param dataId
	 * @param flag
	 * @param params(p1: key=nodeId)
	 * @return
	 * @throws Exception List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getEditOrDetailFieldsAndDataByIntfsItera(String orgId, String deptId, String sysId, String tableId, String dataId, String flag, Map<String, Object> params) throws Exception;

	/**
	 * 根据表ID，获取表的列信息以及数据
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param pageNo
	 * @param pageNo
	 * @param serachMap
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getTableFieldsAndDatasByIntfs(String orgId, String deptId, String sysId, String tableId, String pageNo, String pageSize, Map<String, Object> serachMap) throws Exception;

	/**
	 * 根据表ID，获取所有选择弹出框信息（返回值以英文分号隔开）
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @return
	 * @throws Exception
	 *             String
	 * @throws
	 */
	public String getSelectDialogStringByIntfs(String orgId, String deptId, String sysId, String tableId) throws Exception;

	/**
	 * 根据表ID，获取公共表中所有选择弹出框信息（返回值以英文分号隔开）
	 * @author 郭亮
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @return
	 * @throws Exception String
	 */
	public String getSelectDialogStringByPubByIntfs(String orgId, String deptId, String sysId, String tableId) throws Exception;

	/**
	 * 根据表ID，获取字段通用代码数据(不带参数集合)
	 * 
	 * @author 朱锋
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param dataId
	 *            (如果查询不带数据的记录，那么该参数为空字符串)
	 * @param flag
	 *            (1-是否添加或编辑显示 2-是否列表显示 3-是否详细显示 4-是否查询显示 0-全部字段显示)
	 * @return
	 * @throws Exception
	 *             Map<String,Map<String,String>>
	 * @throws
	 */
	public Map<String, Map<String, String>> getBillLookUpCodeByIntfs(String orgId, String deptId, String sysId, String tableId, String dataId, String flag) throws Exception;

	/**
	 * 根据表ID，获取字段通用代码数据
	 * 
	 * @author 朱锋
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param dataId
	 *            (如果查询不带数据的记录，那么该参数为空字符串)
	 * @param flag
	 *            (1-是否添加或编辑显示 2-是否列表显示 3-是否详细显示 4-是否查询显示 0-全部字段显示)
	 * @param params
	 *            (key:userSecretLevel-当前用户密级)
	 * @return
	 * @throws Exception
	 *             Map<String,Map<String,String>>
	 * @throws
	 */
	public Map<String, Map<String, String>> getBillLookUpCodeByIntfs(String orgId, String deptId, String sysId, String tableId, String dataId, String flag, Map<String, Object> params) throws Exception;

	/**
	 * 根据表ID和列名称获取列类型
	 * 
	 * @author 王旭
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param colName
	 * @return
	 * @throws Exception
	 *             String
	 * @throws
	 */
	public String getColTypeByTableIdAndColNameByIntfs(String orgId, String deptId, String sysId, String tableId, String colName) throws Exception;

	/**
	 * 根据表ID以及查询条件，获取表的列信息以及数据
	 * 
	 * @author 朱锋
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param pageNo
	 * @param pageSize
	 * @param serachCondition
	 * @param param (p1:[key:searchOrder value:LinkedHashMap<String(字段英文名),String(排序策略：{ASC,DESC}>])
	 * @return
	 * @throws Exception
	 */
	public List<Map<String, Object>> getTableFieldsAndDatasBySearchByOrderbyByIntfs(String orgId, String deptId, String sysId, String tableId, String pageNo, String pageSize, String serachCondition, Map<String, Object> param) throws Exception;

	/**  
	* @Title: getTableFieldsAndDatasBySearchByOrderbyByIntfsItera
	* @Description: 档案类型使用此方法
	* @param orgId
	* @param deptId
	* @param sysId
	* @param tableId
	* @param pageNo
	* @param pageSize
	* @param serachCondition
	* @param param
	* @return
	* @throws Exception
	* @return List<Map<String,Object>>
	* @throws  
	* @author huangjian
	*/
	public List<Map<String, Object>> getTableFieldsAndDatasBySearchByOrderbyByIntfsItera(String orgId, String deptId, String sysId, String tableId, String pageNo, String pageSize, String serachCondition, Map<String, Object> param) throws Exception;

	/**
	 * 根据表IDS(以英文分号分开,顺序为：父;子)及查询条件， 获取2层表结构（父-子）的列信息以及数据
	 * 
	 * @author 朱锋
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param pageNo
	 * @param pageSize
	 * @param serachMap
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getTableFieldsAndDatasByTwoTablesByIntfs(String orgId, String deptId, String sysId, String tableIds, String pageNo, String pageSize, Map<String, Object> serachMapFroT1, Map<String, Object> serachMapFroT2) throws Exception;

	/**
	 * 根据固定表集合，动态表ID及查询条件， 获取2层表结构（父-子）的列信息以及数据
	 * 
	 * @author 朱锋
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableName
	 * @param tableId
	 * @param pageNo
	 * @param pageSize
	 * @param serachMap
	 * @param leftJoinOnCondition
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getTableFieldsAndDatasByTabColListAndTableIdByIntfs(String orgId, String deptId, String sysId, List<Map<String, Object>> tabColnumsList, String tableId, String pageNo, String pageSize, List<Map<String, Object>> serachMapFroT1List,
			Map<String, Object> serachMapFroT2, Map<String, String> leftJoinOnCondition) throws Exception;

	/**
	 * 根据SQL查询所需要的数据（带分页，供列表显示）
	 * 
	 * @author 朱锋
	 * @param sql
	 * @param pageNo
	 * @param pageSize
	 * @param sysId
	 * @param allListColName
	 *            （列别名必须以:表别名_列名，格式）
	 * @param orgId
	 * @param deptId
	 * @param tableMap
	 *            （TABLE_ID：表ID，TABLE_FLAG：表别名）
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getTableFieldsAndDatasBySqlByIntfs(String sql, String pageNo, String pageSize, String sysId, List<String> allListColName, String orgId, String deptId, Map<String, Object> tableMap) throws Exception;

	/**
	 * 根据CbbSQL查询所需要的数据（带分页，供列表显示）
	 * 
	 * @author 朱锋
	 * @param sql
	 * @param pageNo
	 *            (如果为空字符串，那么不提供分页功能)
	 * @param pageSize
	 *            (如果为空字符串，那么不提供分页功能)
	 * @param sysId
	 * @param allListColName
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getTableFieldsAndDatasByCbbSqlByIntfs(String orgId, String deptId, String sql, String pageNo, String pageSize, String sysId, List<String> allListColName, List<String> fixColName, String searchSql, Map<String, Object> param) throws Exception;

	/**
	 * 根据CbbSQL查询所需要的数据（带分页，供列表显示）
	 *
	 * @author 赵晓龙 备注：编研车调用查询数据方法重写
	 * @param sql
	 * @param pageNo
	 *            (如果为空字符串，那么不提供分页功能)
	 * @param pageSize
	 *            (如果为空字符串，那么不提供分页功能)
	 * @param sysId
	 * @param allListColName
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getTableFieldsAndDatasByCbbSqlByIntfs(String orgId, String deptId, String sql, String pageNo, String pageSize, String sysId, List<String> allListColName, List<String> fixColName, String searchSql, Map<String, Object> param,String otherFlag) throws Exception;

	/*------------------------------------20150120新增-------------------------------------------------*/
	/**
	 * 根据表ID，字段名，查询条件(SQL语句)查询
	 * 
	 * @author 朱锋
	 * @param tableId
	 * @param searchSql
	 * @param colName
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param flag
	 *            （SUM：求和 MAX：求最大值 MIN：求最小值 AVG:求平均值）
	 * @return
	 * @throws Exception
	 *             Object
	 * @throws
	 */
	public Object getOperationTableColDataByIntfs(String tableId, String searchSql, String colName, String orgId, String deptId, String sysId, String flag) throws Exception;

	/*------------------------------------20150129新增-------------------------------------------------*/
	/**
	 * 根据SQL修改数据
	 * 
	 * @author 朱锋
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param sql
	 * @throws Exception
	 *             void
	 */
	public void updateRecordBySqlByIntfs(String orgId, String deptId, String sysId, String sql, Map<String, Object> params) throws Exception;

	/*------------------------------------20150204新增-------------------------------------------------*/
	/**
	 * 根据表IDS(以英文分号分开,顺序为：主;子)及查询条件， 获取2层表结构（主-子）的列信息以及数据
	 * 
	 * @author 朱锋
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableIds
	 * @param relationT1
	 * @param relationT2
	 * @param pageNo
	 * @param pageSize
	 * @param serachSql
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getTableFieldsAndDatasByTwoTrendsTablesByIntfs(String orgId, String deptId, String sysId, String tableIds, String relationT1, String relationT2, String pageNo, String pageSize, String serachSql) throws Exception;

	/*-------------------------------20150320新增方法--------------------------------------------------------*/
	/**
	 * 根据表ID以及查询条件，获取表的列信息以及数据（不转换任何数据，纯数据库数据）
	 * 
	 * @author 朱锋
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param pageNo
	 *            (如果为空字符串，那么不提供分页功能)
	 * @param pageSize
	 *            (如果为空字符串，那么不提供分页功能)
	 * @param serachCondition
	 * @param changeMap
	 *            (统一改变的值，字符串类型)
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getTableFieldsAndDatasBySearchByNoChangeByIntfs(String orgId, String deptId, String sysId, String tableId, String pageNo, String pageSize, String serachCondition, Map<String, Object> changeMap) throws Exception;

	/*--------------------------------20150324新增--------------------------------------------*/
	/**
	 * 复制/剪切的粘贴操作
	 * 
	 * @author 钟一华
	 * @param targetNodeId
	 *            目标节点id
	 * @param sourceNodeId
	 *            源节点id
	 * @param sourceTableId
	 *            源表tableid
	 * @param sourceChildTableId
	 *            源子表tableid
	 * @param fromType
	 *            类型(文件file/案卷an)
	 * @param dataIds
	 *            数据ids
	 * @param operator
	 *            复制/剪切操作(copy/cut)
	 * @param selectType
	 *            选择项(所选/全选)
	 * @param orgId
	 *            组织id
	 * @param deptId
	 *            部门id
	 * @param sysId
	 * @param loginUserId
	 * @param loginIp
	 * @throws Exception
	 *             void
	 * @throws
	 */
	public void doPasteDatasByIntfs(String targetNodeId, String sourceNodeId, String sourceTableId, String sourceChildTableId, String fromType, String dataIds, String operator, String selectType, String orgId, String deptId, String sysId, String loginUserId, String loginIp,
			Map<String, Object> params) throws Exception;

	/**
	 * 复制/剪切时,粘贴用批量插入数据
	 * 
	 * @author 钟一华
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param listMapObj
	 * @param loginUserId
	 * @param loginIp
	 * @throws Exception
	 *             void
	 */
	public void insertRecordByPasteBatchByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, List<Map<String, Object>> listMapObj, String loginUserId, String loginIp) throws Exception;

	/**
	 * 主子表批量插入关系数据
	 * 
	 * @author 钟一华
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param childTableId
	 * @param mainObjList
	 * @param childObjList
	 * @throws Exception
	 *             void
	 */
	public void insertMainChildDatasByBatchByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, String childTableId, List<Map<String, Object>> mainObjList, List<Map<String, Object>> childObjList) throws Exception;

	/**
	 * 归档接口批量新增数据(带附件)
	 * 
	 * @author 钟一华
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param listMapObj
	 * @throws Exception
	 * @throws
	 */
	public Map<String, Object> insertRecordByfileBatchByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, List<Map<String, Object>> listMapObj, String loginUserId, String loginIp) throws Exception;

	/*********************************** 2015-04-15新建 *********************************************/
	/**
	 * 根据表ID以及查询条件，获取表的列信息以及数据(不自动排序，自己条件排序)
	 * 
	 * @author 朱锋
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param pageNo
	 * @param pageNo
	 * @param serachCondition
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getTableFieldsAndDatasBySearchByIntfs(String orgId, String deptId, String sysId, String tableId, String pageNo, String pageSize, String serachCondition) throws Exception;

	/**************************************** 2015/04/21添加,附件删除,mongdb删除 ********************/
	/**
	 * 根据数据id删除附件和mongdb数据
	 * 
	 * @author 钟一华
	 * @param dataIds
	 * @param sysId
	 * @throws Exception
	 *             void
	 */
	public void deleteAttachmentByDataIdsByIntfs(List<String> dataIds, String sysId) throws Exception;

	/**
	 * 根据配置规则，给表中数据重新插入数据
	 * 
	 * @author 朱锋
	 * @param sysId
	 * @param conditionMap
	 *            void
	 * @throws
	 */
	public void insertFieldValueByConditionMapByIntfs(String sysId, String orgId, String deptId, Map<String, Object> conditionMap) throws Exception;

	/**
	 * 根据源条目id和新条目id复制附件信息
	 * 
	 * @author 钟一华
	 * @param dataId
	 * @param dataNewId
	 * @throws Exception
	 *             void
	 */
	public void insertMongoDbAttachment(String dataId, String dataNewId) throws Exception;

	/**
	 * 生成全部档号或所选档号
	 * 
	 * @author 朱锋
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param paramMap
	 *            参数MAP [p1：key='flag'，value：boolean 必填（是否全部记录，true全部，false部分）]
	 *            [p2：key='recordId'，value：list<String> 非必填（部分记录ID）]
	 *            [p3：key='tableId'，value：String 必填（表ID）]
	 *            [p4：key='parentId'，value：String 非必填（案卷级数据ID）]
	 * @throws Exception
	 *             void
	 * @throws
	 */
	public void updateRecordByArchiveCodeByIntfs(String orgId, String deptId, String sysId, Map<String, Object> paramMap) throws Exception;

	/**
	 * 添加业务数据（后台应用配置添加）
	 * 
	 * @author 朱锋
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param param
	 *            参数MAP[p1：key='tableId'，value：String必填（表ID）]
	 *            [p2：key='mapObj'，value：Map<String（字段名）, Object（值）> 必填（新增值）]
	 *            [p3：key='loginUserId'，value：String 必填（登陆用户ID）]
	 *            [p4：key='loginIp'，value：String 必填（登陆用户IP）]
	 *            [p5：key='dataId'，value：String 非必填（顺带，序列应用时所选记录的ID）]
	 *            [p6：key='ortherConfigDataId'，value：String 非必填（组合项应用时兄弟表记录的ID）]
	 *            [p7：key='userAuthsql'，value：String 非必填（条件sql，其中包含了用户权限sql）]
	 * @return
	 * @throws Exception
	 *             String
	 * @throws
	 */
	public String insertRecordByConfigByIntfs(String orgId, String deptId, String sysId, Map<String, Object> param) throws Exception;

	/***
	 * 根据数据ID修改业务数据状态等（单一数据修改,带有文件级反更新新案卷级操作,编辑文件数据时用）
	 * 
	 * @author 郭亮
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param mapObj
	 * @param dataId
	 * @param param
	 *            参数MAP[p1：key='ajDataId'，value：String非必填（案卷级数据ID）]
	 * @throws Exception
	 */
	public void updateRecordByDataIdWithUpdateAjByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, Map<String, Object> mapObj, String dataId, Map<String, Object> param) throws Exception;

	/***
	 * 根据IDS批量修改业务数据状态等（批量数据修改,带有反更新操作,删除文件数据时用）
	 * 
	 * @author 郭亮
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param mapObj
	 * @param dataIds
	 * @param param
	 *            参数MAP[p1：key='ajDataId'，value：String非必填（案卷级数据ID）]
	 * @throws Exception
	 */
	public void updateRecordByDataIdsWithUpdateAjByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, Map<String, Object> mapObj, String dataIds, Map<String, Object> param) throws Exception;

	/**
	 * 根据SQL查询所需要的数据（纯动态表,公共字段列带分页，供列表显示）
	 * 
	 * @author 朱锋
	 * @param sql
	 * @param pageNo
	 * @param pageSize
	 * @param sysId
	 * @param orgId
	 * @param deptId
	 * @param flag
	 *            是否数据转换（Y：是，N：否）
	 * @param allListColName
	 *            列别名
	 * @param paramMap
	 *            （目前是空，备用参数集合）
	 * @return
	 * @throws Exception
	 *             List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getTableFieldsAndDatasBySqlByDtByIntfs(String sql, String pageNo, String pageSize, String sysId, List<String> allListColName, String orgId, String deptId, String flag, Map<String, Object> paramMap) throws Exception;

	/**
	 * 批量修改数据(同字段,多值)
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param tableId
	 * @param mapParam P1
	 *            <key:dataMap,value:Map<String(数据ID),Map<String(字段英文名),Object(
	 *            字段值)>>>
	 * @throws Exception
	 */
	public void updateRecordByBatchByIntfs(String orgId, String deptId, String sysId, String nodeId, String tableId, Map<String, Object> mapParam) throws Exception;

	/**
	 * 根据userId查找userName
	 * @author gl
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public String getUserNameById(String id) throws Exception;

	/**
	 * 根据deptId查找deptName
	 * @author gl
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public String getDeptNameById(String id) throws Exception;

	/**
	 * 自定义页面，根据ID查询具体的值
	 * @author gl
	 * @param value
	 * @param path
	 * @return
	 * @throws Exception
	 */
	public String getCustomValue(String value, String path) throws Exception;

	/**
	 * 根据SQL单字段分组查询数据，（可分页）
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param sql
	 * @param pageNo
	 * @param pageSize
	 * @param mapParam
	 * @return
	 * @throws Exception List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getDataBysSqlByIntfs(String orgId, String deptId, String sysId, String tableId, String tableName, String colId, String colName, String sql, String pageNo, String pageSize, Map<String, Object> mapParam) throws Exception;

	/**
	 * 根据tableId、nodeId获取tabNodeId（文件类型取‘个人文件’‘部门文件’节点ID作为tabNodeId）
	 * @author 郭亮
	 * @param sysId 必填
	 * @param tableId 必填
	 * @param nodeId
	 * @return
	 * @throws Exception List<Object>
	 */
	public String getCbbTabNodeIdByTableId(String sysId, String tableId, String nodeId) throws Exception;

	/**
	 * 根据tableId、nodeId获取tabNodeId（模板文件夹NODE_ID）
	 * @param sysId
	 * @param tableId
	 * @param nodeId
	 * @return
	 * @throws Exception 
	 * @throws
	 */
	public String getCbbTabModelNodeIdByNodeId(String nodeId) throws Exception;

	/**
	 * 处理卷内序号方法
	 * @param param
	 * @throws Exception void
	 * @throws
	 */
	public void saveOtherArchiveInNumByIntfsByParam(Map<String, Object> param) throws Exception;

	/***
	 * 根据文件级数据更新案卷级数据（统计生成应用）
	 * 
	 * @author 郭亮
	 * @param tableId
	 *            当前操作表ID（必填）
	 * @param ajDataId
	 *            案卷级表ID （必填）
	 * @param orgId
	 *            案卷级数据记录ID （非必填）
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param wjIds
	 *            文件数据ID串，组卷操作时有值
	 * @throws Exception
	 */
	public void updateAjDataByWjdataByInfs(String tableId, String ajDataId, String orgId, String deptId, String sysId, String nodeId, String wjIds, Map<String, Object> params) throws Exception;

	/**
	 * 删除数据方法(真删)
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param param
	 * 			key: condition : 需要删除的条件语句
	 * 			key: level : 执行删除的层级 1 文件 2 案卷/盒
	 * @throws Exception void
	 * @throws
	 */
	public void deleteDatasByParamByIntfs(String orgId, String deptId, String sysId, String nodeId, Map<String, Object> param) throws Exception;

	/**
	 * 根据创建时间更新卷内序号方法
	 * @param param
	 * @throws Exception void
	 * @throws
	 */
	public void updateArchiveInNumByParam(Map<String, Object> param) throws Exception;

	/**
	 * 根据tableId和数据id获取页数和下标
	 * @return
	 * @throws Exception String
	 * @throws
	 */
	public List<String> getDatasPageNumAndIndexByTableIdRecordId(Map<String, Object> param, String sqlWhere) throws Exception;

	/**
	 * 获取查询条件拼接中文查询语句
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param userId
	 * @param orgCode
	 * @param nodeId
	 * @param tableId
	 * @param json
	 * @param sessionLanguageCode
	 * @return
	 * @throws Exception String
	 */
	public String getSearchString(String orgId, String deptId, String sysId, String userId, String orgCode, String nodeId, String tableId, String json, String sessionLanguageCode) throws Exception;

	/**
	 * 创建新条目附件关系数据
	 * @param param
	 * @throws Exception void
	 * @throws
	 */
	public void createAttachmentRelationDatas(Map<String, Object> param) throws Exception;

	/**
	 * 根据表ID及数据ID集合获得数据对应的密级
	 * 
	 * @author 张余
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @param ids
	 * @return 
	 * @throws Exception
	 *             Map<String,Object>
	 * @throws
	 */
	public Map<String, Object> getSecretLevelByIdsAndTableId(String orgId, String deptId, String sysId, String tableId, String ids) throws Exception;

	/**
	 * 断号查询
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param param key: NODE_ID(必填), TABLE_ID(必填), PARENT_ID(非必填) ...
	 * @return
	 * @throws Exception Map<String,Object>
	 * @throws
	 */
	public Map<String, Object> getDisconnectNumByParamByIntfs(String orgId, String deptId, String sysId, Map<String, Object> param) throws Exception;

	/**
	 * 根据NODE_ID 判断是否为档案类型数据
	 * @param orgId
	 * @param sysId
	 * @param nodeId
	 * @return String
	 * @throws
	 */
	public String getArchiveTypeByNodeIdAndTableId(String orgId, String sysId,String nodeId, String tableId);

	/**
	 * 文件级根据dataId查询归档单位和责任者的id
	 *
	 * @auth qht
	 * @param dataId
	 * @return
	 */
	List<Map<String, Object>> getCode(String dataId,String tableName);
	/**
	 * 根据表ID，获取所有选择弹出框信息（返回值以英文分号隔开）
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param tableId
	 * @return
	 * @throws Exception
	 *             String
	 * @throws
	 */
	public String getSelectDialogStringByIntfs1(String orgId, String deptId, String sysId, String tableId) throws Exception;
	
	/**
	 * 生成所选数据保管号
	 * 
	 * @author 朱锋
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param paramMap
	 *            参数MAP
	 *            [p1：key='recordIds'，value：list<String> 必填（记录ID）]
	 *            [p2：key='tableId'，value：String 必填（表ID）]
	 * @throws Exception
	 *             void
	 * @throws
	 */
	public boolean updateBghByRecordIdByIntfs(String orgId, String deptId, String sysId, Map<String, Object> paramMap) throws Exception;

	/**
	 * 获取分类检索分页总条数 zms
	 * @param currentOrgId
	 * @param currentDeptId
	 * @param sysId
	 * @param tableId
	 * @param pageNo
	 * @param pageSize
	 * @param toString
	 * @param param
	 * @return
	 */
	public String getTableFieldsAndDatasBySearchByOrderbyByIntfsCount(String currentOrgId, String currentDeptId, String sysId, String tableId, String pageNo, String pageSize, String toString, Map<String, Object> param);

	/**
	 *根据案卷ID获取对应文件的ID和卷内序号
	 * @param tableName
	 * @param ids
	 * @return
	 */
	List<Map<String, Object>> getArchiveInNumAndIdByFileId(String tableName, String anTableName,String ids);

	/**
	 * 根据盒号获取存放位置 SanxiaFiles create by zhaoxiaolong
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param nodeId
	 * @param boxCode
	 * @return
	 */
	String getExistenceArchivePositionByBoxCode(String orgId, String deptId, String sysId, String nodeId, String boxCode,String tableName);

	/**
	 * 查询已存在盒号 SanxiaFiles create by zhangrui
	 * @param
	 * @param
	 * @param
	 * @return
	 */
	List<Map<String,Object>> getBoxByTableId(String tableId,String deptId,String tableName,String textName);

	/**
	 * 查询已存在盒号 SanxiaFiles create by zhangrui
	 * @param
	 * @param
	 * @param
	 * @return
	 */
	List<Map<String,Object>> getArchiveClassNoBySql(String nodeId,String tableId);

	/**
	 * 更新起止日期方法抽离
	 * SanXiaFiles create by zhaoxiaolong
	 * @param anId
	 * @param anTableId
	 */

	void UpdateQzrqByAnIdAndAnTableId(String anId,String anTableId,Map<String,Object> param);

	/**
	 * 变更案卷页数
	 */
	void UpdateYsByAnIdAndAnTableId(String anId, String tgtAnTableId, String fileIds, String tgtFileTableId, String orgId, String nodeId);

	/**
	 * 更新案卷件数
	 * @param resultId
	 * @param anTableId
	 * @param fileTableId
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @throws Exception
	 */
    void UpdateJsByAnIdAndAnTableId(String resultId, String anTableId, String fileTableId,String orgId,String deptId,String sysId) throws Exception;

	/**
	 * 拆卷下没有子卷修改案卷为不显示
	 * @param sqlT
	 * @param table
	 */
	void updateById(String sqlT,String anTableId);
}
